package work模式

import (
	"fmt"
	"github.com/streadway/amqp"
	"log"
)

func Cwork() {
	// 1. 尝试连接RabbitMQ，建立连接
	conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
	if err != nil {
		fmt.Println(err)
	}
	defer conn.Close()

	// 2. 接下来，我们创建一个通道，大多数API都是用过该通道操作的。
	ch, err := conn.Channel()
	if err != nil {
		fmt.Println(err)
	}
	defer ch.Close()

	// 3. 声明消息要发送到的队列
	//如果没有一个名字叫hello的队列，则会创建该队列，如果有则不会创建
	q, err := ch.QueueDeclare(
		"hello", // name
		false,   // durable
		false,   // delete when unused
		false,   // exclusive
		false,   // no-wait
		nil,     // arguments
	)
	if err != nil {
		fmt.Println(err)
	}

	// 4.接收消息
	msgs, err := ch.Consume( // 注册一个消费者（接收消息）
		q.Name, // queue
		"",     // consumer
		true,   // auto-ack
		false,  // exclusive
		false,  // no-local
		false,  // no-wait
		nil,    // args
	)

	for d := range msgs {
		log.Printf("Received a message: %s", d.Body)
	}

}
